package exam.service.impl;

import com.github.pagehelper.PageHelper;
import exam.bean.Teacher;
import exam.dao.TeacherDao;
import exam.service.ITeacherService;
import exam.utils.FileUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Random;

@Service
public class TeacherServiceImpl implements ITeacherService {

    @Autowired
    private TeacherDao teacherDao;


    @Override
    public List<Teacher> selectTeacher(int pageNum, int pageSize,Map<String,Object> queryMap) {
        //将参数传给这个方法就可以实现物理分页了，非常简单。
        PageHelper.startPage(pageNum, pageSize);
        return teacherDao.selectTeacher(queryMap);
    }

    @Override
    public int insertTeacher(Teacher teacher,String uploadPath) {

        //添加入库时间
        teacher.setEnterDate(new Date());
        //逻辑删除标识位
        teacher.setFlag(1);

        //用于上传文件的逻辑写在这
        /**
         * 要判断上传的文件是否为空
         * 如果不为空的时候，我们才去做业务逻辑
         *
         * 1.我们要将文件上传到服务器，放在服务器的文件夹里
         * 通过FileUtil 这个工具类 实现
         * 2.我们要将这个文件的路径存到数据库里面
         *
         */
        if(teacher.getUtilFile() !=null && !teacher.getUtilFile().equals("")){

            //混淆过后的文件名
            String fileName = FileUtil.uploadFileSingle(teacher.getUtilFile(), uploadPath);

            //获取原文件名
            /**
             * getOriginalFilename
             * 获得原始文件名
             *
             */

            String fileNameSrc= teacher.getUtilFile().getOriginalFilename();

            teacher.setUtilFilePath(fileName);
            teacher.setFileNameSrc(fileNameSrc);


        }


        return teacherDao.insertTeacher(teacher);
    }

    @Override
    public Teacher selectTeacherSingle(Map<String, Object> map) {
        return teacherDao.selectTeacher(map).get(0);
    }

    @Override
    public int updateTeacher(Teacher teacher,String uploadPath) {

        /**
         * 修改附件的流程
         * 1.我们要把新的文件上传到服务器当中
         * 2.我们要修改数据库当中的混淆后的文件名以及原文件名
         *
         * 漏洞：旧文件  你没有提  就永久失联   它是永远存在。造就严重的问题 你的服务器存储是永远递增的。硬件存储问题  经济问题
         * 安卓越用越卡
         *
         */
        if(teacher.getUtilFile() !=null && !teacher.getUtilFile().equals("")){

            //混淆后文件名
            String uploadFileSingle = FileUtil.uploadFileSingle(teacher.getUtilFile(), uploadPath);
            //原文件名
            String fileNameSrc= teacher.getUtilFile().getOriginalFilename();

            teacher.setUtilFilePath(uploadFileSingle);
            teacher.setFileNameSrc(fileNameSrc);

        }
        //用户 不想要附件了，他给删了
        else{
            teacher.setUtilFilePath("");
            teacher.setFileNameSrc("");
        }



        return teacherDao.updateTeacher(teacher);
    }

    @Override
    public int deleteTeacher(int id) {
        return teacherDao.deleteTeacher(id);
    }


}
